
#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"
#include "math.h"

struct P{
    int x;
    int y;
};
class OneLoop {
public:
    int mat[8][8];
    std::vector<P> stack;
    bool putable(int x,int y){
        for(int i=stack.size()-1;i>=0;i--){
            auto&p=stack[i];
            if(p.x==x){
                return false;
            }
            if(x-p.x==y-p.y){
                return false;
            }
            if(x-p.x==p.y-y){
                return false;
            }
        }
        return true;
    }
    int max=0;
    int sum=0;
    void dfs(int depth){
        if(depth==8){
            max= std::max(max,sum);
            return;
        }
        for(int x=0;x<8;x++){
            if(putable(x,depth)){
                stack.push_back({x,depth});
                sum+=mat[depth][x];
                dfs(depth+1);
                sum-=mat[depth][x];
                stack.pop_back();
            }
        }
    }
    bool run(){

        for(int i=0;i<8;i++){
            for(int j=0;j<8;j++){
                if(
                        std::cin>>mat[i][j]){

                }else{
                    return false;
                }
            }
        }
        dfs(0);
        printf("%d\n",max);
        return true;
    }
    OneLoop() {
    }
};

class Solution {
public:
    void run() {

        bool first = true;
        int a, b;
        std::string s;
        while (
//                std::cin >> a
//                std::getline(std::cin,s)
1
                ) {
            OneLoop loop;
                   if(!loop.run()){
                       return;
                   }
        }
    }
};


int main() {


//    for(int i=3;i<100000000;i++){
//        if(is_chun_cu(i)){
//            printf("%d,",i);
//        }
//    }

//    bool cur_num= true;
    Solution().run();
    return 0;
}

